/**
 * common.js
 */
   var config;

   /**
	*读取文件内容
	*/
	var initConfig = function ()
	{
			$.ajax({
			   type : "get",   
	           url : 'json/config.json',   
	           dataType:'json',
	           async : false,   
	           cache:false, 
	           success : function(data)
	           {
					config = data;
	           }
			});
		return config;
};

var pageUrl ; // pageUrl  页面跳转路径
var serviceUrl ; // serviceUrl service路径
var version; // 版本号
var phpHeadPath;
var courierNumberSize;//
var userId;//当前用户ID
var roleId;//当前用户角色

var Common = function(){
	initConfig();
	pageUrl = config.pageUrl;
	serviceUrl = config.serviceUrl;
	version = config.version;
	phpHeadPath = config.phpHeadPath;
	courierNumberSize = config.courierNumberSize;
};

Common.prototype = {
	 flagShowError: true,
     flagIsDebug: false,
     currentProj: null,//-1,未关注公众号, 0 游客, 1 会员, 2 管理者
     role:null,
     /**
	 * ajax请求
	 * @param url          请求地址
	 * @param data       请求参数 {param1:value1,param2:value2，...}
	 * @param method  请求方式 'GET'/'POST'
	 * @returns
	 */
    ajaxRequest:function( url , data , method )
    {
        var json = null;
        try
        {
            $.ajax({
                url:url,
                data:data,
                dataType:'json',
                type:method,
                async:false, //默认值: true。默认设置下，所有请求均为异步请求。如果需要发送同步请求，请将此选项设置为 false
                success:function(callback)
                {
                    if( callback.result>=0 )
                    {
                        json = callback;
                    }
                    else
                    {
                        var errMsg=Common.prototype.validVar(callback.message)?callback.message:'json error!';
                        json = {"result":callback.result,"message":errMsg};
                    }
                },
                error:function(callback){				
					try
					{
						json = eval('('+callback.responseText+')');
					}
					catch( ex )
					{
						//console.debug('exception:'+ex);
					}
                    
                    if( json.result )
                    {
                        // do nothing
                    }
                    else
                    {
                          json = {"result":-1,"datas":{},"message":ex};
                    }

                }
            });
        }
        catch(ex)
        {
            json = {"result":-99,"datas":{},"message":ex};
        }
        
        if( json && json.result == -2 )
        {
        	window.parent.location.href='page?p=login';
        }	
        return json;
    },
    
    /**
     * 显示加载动画
     */
    showProgress:function(){
    	var html='';
	 	   html+='<div class="progressBar" style="position: absolute;top: 0;left: 0;right:0;bottom:0;width:100%;height:100%;background-color: #000;-moz-opacity: 0.8;opacity:0.8;z-index:99999;filter: alpha(opacity=80);padding-top: 200px;">';
	 		   html+='<div class="sk-spinner sk-spinner-fading-circle">';
	 			   html+='<div class="sk-circle1 sk-circle"></div>';
	 			   html+='<div class="sk-circle2 sk-circle"></div>';
	 			   html+='<div class="sk-circle3 sk-circle"></div>';
	 			   html+='<div class="sk-circle4 sk-circle"></div>';
	 			   html+='<div class="sk-circle5 sk-circle"></div>';
	 			   html+='<div class="sk-circle6 sk-circle"></div>';
	 			   html+='<div class="sk-circle7 sk-circle"></div>';
	 			   html+='<div class="sk-circle8 sk-circle"></div>';
	 			   html+='<div class="sk-circle9 sk-circle"></div>';
	 			   html+='<div class="sk-circle10 sk-circle"></div>';
	 			   html+='<div class="sk-circle11 sk-circle"></div>';
	 			   html+='<div class="sk-circle12 sk-circle"></div>';
	 		   html+='</div>';
	 	   html+='</div>';
	 	$('body').append(html);
    },
    /**
     * 隐藏加载动画
     */
    hideProgress:function(){
    	$('body .progressBar').remove();
    },
    
    /**
	 *  校验参数是否为空
	 * @param value  校验的值
	 * @returns true/false
	 *  */
	validVar: function( value )
	{
		return typeof(value) != undefined && value!=null && value!='' ;
	},
	
	/**
	 * 初始化全部选中按钮
	 */
	initSelectAll:function(){
		$('.selectAll').click(function(){
			var str=$(this).html();
			$('input[name="checkCour"]').click();
			if(str=="全选"){
				$(this).html("取消");
				$('input[name="checkCour"]').attr("checked",true);
			}else{
				$(this).html("全选");
				$('input[name="checkCour"]').attr("checked",false);
			}
		});
	},
	
	/**
	 *  获取url中参数
	 * @param paramName  参数名称
	 * @returns 
	 */
	getUrlParam:function( paramName )
	{
		    var url = location.search; //获取url中"?"符后的字串
			var theRequest = new Object();
			if (url.indexOf("?") != -1)
			{
			      var str = url.substr(1);
			      strs = str.split("&");
			      for(var i = 0; i < strs.length; i ++) 
			      {
			         theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
			      }
			 }
			return theRequest[paramName];
	},
	/**
	 * 获取当前页面名称 
	 */
	pageName:function()
    {
        var a = location.href;
        if( a.indexOf('p=') > 0 )
        {
        	return this.getUrlParam('p');
        }
        else
        {
        	var b = a.split("/");
	        var c = b.slice(b.length-1, b.length).toString(String).split(".");
	        return c.slice(0, 1);  
        }
    },
    /**
	 *  重定向请求
	 * @param pageName          请求地址
	 * @param paramStr            请求参数 param1=value1&param2=value2...
	 * @returns 
     *  */
    redirect:function( pageName , paramStr)
	{
	    var url = redirectUrl + '?p='+pageName ;
	    if( this.validVar(paramStr) ) 
	    {
	    	url = url + '&' + paramStr ;
	    }
	    window.location.href= url ;
	},
	/**
	 * 判断checkBox是否选中 
	 */
	checkBoxIsSelected: function( checkBoxId )
	{
		return $("#"+checkBoxId).is(':checked');
	},
	 /**
	 *  检查返回结果( 是否成功 )
	 * @returns true/false
	 *  */	
	checkResult:function( json )
	{
		this.log('debug',json);
		if( !jsonUtil.isJson( json ))
		{
			this.log('error', '返回非JSON对象' );
			return false;
		}
		
		if( null == json )
		{
			this.log('error', '返回JSON为空' );
			return false;
		}
		else
		{
			if( json.hasOwnProperty('result'))
			{
				if( json.result == 0 )
				{
					return true;
				}
				else
				{
					this.log('error', json.message );
					return false;
				}
			}
			else
			{
				this.log('error', '返回JSON中没有result属性' );
				return false;
			}
		}
	},
	
	/**
	 *  服务器端请求
	 * @param action  请求的action方法名称
	 * @param param  参数
	 * @param method  POST/GET
	 * @returns true/false
	 *  */	
	callServerFunction: function( action , param , method)
	{
		 var data={};
         var url = serviceUrl;
         if( this.validVar(param) ) 
         {
         	data = param;
         }
         return this.ajaxRequest( url , data , method );
	},
	/**
	  *  获取当前用户的角色
	  * @returns 
	 */
	 userRole:function()
	 {
		    var userId;
			$.ajax({
				   type : "get",   
		           url : 'jsp/userRole.jsp',   
		           async : false,   
		           dataType:'json',
		           cache:false, 
		           success : function(data)
		           {
		        	   userId = data.roleId;
		           }
			});
			return userId;
	 },
	 /**
	  * 判断按钮访问权限
	  * @param roleId   角色ID
	  * @param func     按钮事件名称（可以是js方法名）
	  * @param menuLink
	  */
	 checkPermission:function( roleId , func , menuLink ){
		 var json = Common.prototype.ajaxRequest('service',{"p":"authorityMenuManage","m":"checkPermission","roleId":roleId,"name":func,"link":menuLink,"type":2} , 'POST');
		 if( json&&json.result == 0 )
		 {
			 return true;
		 }
		 else
		 {
			 Common.prototype.showMsg('error', '', '您当前的权限无法访问该方法!');
			 return false;
		 }	 
	 }, 
	 /**
	  *  展示消息提示
	  *  @param {Object} jsurl    引入JS文体路径
	  *  @param {Object} msg   消息内容，不能为空
	  */
  includeJS: function (jsurl) {
  	    
  	    try
  	    {
  	    	if (jsurl == null || typeof(jsurl) != 'string') return;
	        var js = document.createElement('script');
	        js.type = 'text/javascript';
	        js.charset = 'utf-8';
	        js.src = jsurl+'?version='+version;
	        $.ajaxSetup({ cache : true });
	        $('head').append(js);
		} 
		catch (e) 
		{
			common.log('info', '找不到js,'+jsurl);
		}
 	},
 	
	 /**
	  *  展示消息提示
	  *  @param {Object} level   调试信息等级  info,debug,error
	  *  @param {Object} msg   消息内容，不能为空
	  */
	 log:function( level , msg)
	 {
	 	if( config.model == 'debug')
	 	{
	 		switch( level )
	 		{
	 			case 'info':
	 				//console.info(msg);
	 				break;
	 			case 'debug':
	 				//console.debug(msg);
	 				break;
	 			case 'error':
	 				//console.error(msg);
	 				break;
	 			default:
	 				//console.info(msg);
	 		}
	 	}
	 },
	 /**
	  * MD5加密
	  * @param value
	  */
	 md5:function( value )
	 {
		 if( null!=value && value!='' && value!=undefined)
		 {
			 return hex_md5(value);
		 }
		 else
		 {
			 return null;
		 }	 
	 },
	 /**
	  * sha1加密
	  * @param value
	  */
	 sha1:function( value )
	 {
		 if( null!=value && value!='' && value!=undefined)
		 {
			 return hex_sha1(value);
		 }
		 else
		 {
			 return null;
		 }	 
	 },
	 /**
	  * base64加密
	  * @param value
	  * @returns
	  */
	 base64Encode:function( value ) 
	 {
		 if( null!=value && value!='' && value!=undefined)
		 {
			 return BASE64.encoder(value);
		 }
		 else
		 {
			 return null;
		 }	
	 },
	 /**
	  * base64解密
	  * @param value
	  * @returns
	  */
	 base64Decode:function( value ) 
	 {
		 if( null!=value && value!='' && value!=undefined)
		 {
			 return BASE64.decoder(value);
		 }
		 else
		 {
			 return null;
		 }	
	 },

	 
	 /**
	  *  显示toastr消息提示框
	  * @param type    info , warning , error
	  * @param title     标题
	  * @param content  消息内容
	  */
	 showMsg:function( type , title , content ){
		 toastr.options = {
				  "closeButton": true,
				  "debug": false,
				  "progressBar": false,
				  "positionClass": "toast-top-full-width",
				  "onclick": null,
				  "showDuration": "400",
				  "hideDuration": "500",
				  "timeOut": "1500",
				  "extendedTimeOut": "500",
				  "showEasing": "swing",
				  "hideEasing": "linear",
				  "showMethod": "fadeIn",
				  "hideMethod": "fadeOut"
		  };
		 if( type == 'info' )
		 {
			 toastr.info( title , content );
		 }
		 else if( type == 'warning' )
		 {
			 toastr.warning( title , content );
		 }	 
		 else if( type == 'error' )
		 {
			 toastr.error( title , content );
		 }	
		 else
		 {
			 toastr.info( title , content );
		 }	 
	 },
	 /**
	  * 显示确认窗口
	  * @param title  消息标题
	  * @param text  消息内容
	  * @param functionStr 调用的方法：例如 XXXX();
	  */
	 showConfirm:function(  title , text , functionStr ){
		  swal({
		        title: title,
		        text: text,
		        showCancelButton: true,
		        confirmButtonColor: "#DD6B55",
		        confirmButtonText: '确定' ,
		        closeOnConfirm: false
		    }, 
		    function(a) {
	            if (a) {
	            	try
	            	{
	            		if( functionStr )
	            		{
		            		var flag = eval(functionStr);
		            		if( flag )
		            		{
		            			swal('','操作成功','success');
		            		}
		            		else
		            		{
		            			swal('','操作失败','error');
		            		}	
	            		}	
	            	}
	            	catch(ex)
	            	{
	            		swal('异常',ex,'error');
	            	}
	            }
	            else 
	            {
	            	
	            }
	        });
	 }
};


var JSONUtil = function(){
};

JSONUtil.prototype = {
	/**
	 * 检查是否JSON 数组，我们规定只要是json对象，并且包含"["就认为是数组 
	 */
	isJsonArray:function( json )
	{
		if( !this.isJson( json ))
		{
			//不是json对象
			return false;
		}
		else
		{
			if( JSON.stringify(json).indexOf('[') == 0 )
			{
				return true;
			}
			else
			{
				return false;
			} 
		}
	},	
		/***
	 * 判断返回是否json格式
	 */
	isJson :function(obj){
	    var isjson = typeof(obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" 
	     && !obj.length|| ( JSON.stringify(obj).indexOf('{')>=0 || JSON.stringify(obj).indexOf('[')==0);
	    return isjson;
	},
	/**
	 * 从一个json对象中，取 对应的值
	 */
	getJsonValue:function( jsonObject , key )
	{
		if( null == jsonObject )
		{
			//对象为空
			return null;
		}
		if(!this.isJson(jsonObject))
		{
			//不是json对象
			return null;
		}
		
		if( !jsonObject.hasOwnProperty(key))
		{
			//json对象中不存在key属性
			return null;
		}
		
		return jsonObject[key];
	}
};

var jsonUtil = new JSONUtil();
var common = new Common();
var loginUserRoleId = common.userRole();
/*  引入需要的文件 */
//common.includeJS('js/page/' + common.pageName() + '.js'); // 校验js

/** 初始化时间控件 */
$(document).ready(function() {
	 $(".date").datepicker({
	        todayBtn: "linked",
	        keyboardNavigation: false,
	        forceParse: false,
	        calendarWeeks: true,
	        autoclose: true
	 });
});
